<?php
/**
 * [LupMisNotAllowedSync]
 * 本代码为系统自动生成代码，请根据自己业务进行修改;
 * 生成时间 2022-02-15 20:59:20;
 * 版权所有 2020-2022 lizhongwen，并保留所有权利;
 * 说明: 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用；不允许对程序代码以任何形式任何目的的再发布;
 * 作者: 中文Lee;
 * 作者主页: http://www.lizhongwen.com;
 * 邮箱: 360811363@qq.com;
 * QQ: 360811363;
 */

namespace modules\sys\component;


class TreeComponent
{

    public function menuTree($treeIdsArr = [], $isRole = true): array
    {
        $pageRs = GetCacheComponent::page();
        $pageRs = array_column($pageRs, NULL, 'id');

        $treeRs = GetCacheComponent::tree();
        foreach ($treeRs as $k => $v) {

            $treeRs[$k]['icon'] = !empty($v['icon']) ? 'fa ' . $v['icon'] : 'fa fa-circle-o';
            $treeRs[$k]['sys_page'] = $pageRs[$v['page_id']] ?? null;
        }
        return $this->getTree($treeRs, '0', $treeIdsArr, $isRole);
    }

    public function getTree($data, $pid, $treeIdsArr, $isRole): array
    {
        $tree = [];
        foreach ($data as $v) {
            if ($v['status'] == 1) {
                if ($isRole) {
                    if (in_array($v['id'], $treeIdsArr)) {
                        if ($v['pid'] == $pid) {
                            // 父亲找到儿子
                            $v['child'] = $this->getTree($data, $v['id'], $treeIdsArr, $isRole);
                            $tree[] = $v;
                        }
                    }
                } else {
                    if ($v['pid'] == $pid) {
                        // 父亲找到儿子
                        $v['child'] = $this->getTree($data, $v['id'], $treeIdsArr, $isRole);
                        $tree[] = $v;
                    }
                }
            }
        }
        return $tree;
    }
}

